home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.GridBagConstraints;
- import java.awt.GridBagLayout;
- import java.awt.Insets;
- import java.awt.LayoutManager;
- import java.awt.event.ActionListener;
- import java.beans.PropertyChangeListener;
- import javax.swing.AbstractButton;
- import javax.swing.Box;
- import javax.swing.BoxLayout;
- import javax.swing.Icon;
- import javax.swing.JButton;
- import javax.swing.JComboBox;
- import javax.swing.JComponent;
- import javax.swing.JLabel;
- import javax.swing.JList;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JRootPane;
- import javax.swing.JScrollPane;
- import javax.swing.JTextField;
- import javax.swing.KeyStroke;
- import javax.swing.LookAndFeel;
- import javax.swing.SwingUtilities;
- import javax.swing.UIManager;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.OptionPaneUI;
- import javax.swing.text.JTextComponent;
-
- public class BasicOptionPaneUI extends OptionPaneUI {
- public static final int MinimumWidth = 262;
- public static final int MinimumHeight = 90;
- protected JOptionPane optionPane;
- protected Dimension minimumSize;
- protected JComponent inputComponent;
- protected Component initialFocusComponent;
- protected boolean hasCustomComponents;
- protected PropertyChangeListener propertyChangeListener;
-
- protected void addButtonComponents(Container var1, Object[] var2, int var3) {
- if (var2 != null && var2.length > 0) {
- boolean var4 = this.getSizeButtonsToSameWidth();
- boolean var5 = true;
- int var6 = var2.length;
- JButton[] var7 = null;
- int var8 = 0;
- if (var4) {
- var7 = new JButton[var6];
- }
-
- for(int var9 = 0; var9 < var6; ++var9) {
- Object var10 = var2[var9];
- Object var11;
- if (var10 instanceof Component) {
- var5 = false;
- var11 = (Component)var10;
- var1.add((Component)var11);
- this.hasCustomComponents = true;
- } else {
- JButton var12;
- if (var10 instanceof Icon) {
- var12 = new JButton((Icon)var10);
- } else {
- var12 = new JButton(var10.toString());
- }
-
- var1.add(var12);
- ActionListener var13 = this.createButtonActionListener(var9);
- if (var13 != null) {
- ((AbstractButton)var12).addActionListener(var13);
- }
-
- var11 = var12;
- }
-
- if (var4 && var5 && var11 instanceof JButton) {
- var7[var9] = (JButton)var11;
- var8 = Math.max(var8, ((Component)var11).getMinimumSize().width);
- }
-
- if (var9 == var3) {
- this.initialFocusComponent = (Component)var11;
- if (this.initialFocusComponent instanceof JButton) {
- JButton var16 = (JButton)this.initialFocusComponent;
- ((JComponent)var16).addAncestorListener(new 6());
- }
- }
- }
-
- ((ButtonAreaLayout)var1.getLayout()).setSyncAllWidths(var4 && var5);
- if (var4 && var5) {
- int var15 = var6 <= 2 ? 8 : 4;
-
- for(int var17 = 0; var17 < var6; ++var17) {
- JButton var14 = var7[var17];
- ((AbstractButton)var14).setMargin(new Insets(2, var15, 2, var15));
- }
- }
- }
-
- }
-
- protected void addIcon(Container var1) {
- Icon var2 = this.getIcon();
- if (var2 != null) {
- JLabel var3 = new JLabel(var2);
- var3.setVerticalAlignment(1);
- var1.add(var3, "West");
- }
-
- }
-
- protected void addMessageComponents(Container var1, GridBagConstraints var2, Object var3, int var4, boolean var5) {
- if (var3 != null) {
- if (var3 instanceof Component) {
- var2.fill = 2;
- var2.weightx = (double)1.0F;
- var1.add((Component)var3, var2);
- var2.weightx = (double)0.0F;
- var2.fill = 0;
- ++var2.gridy;
- if (!var5) {
- this.hasCustomComponents = true;
- }
- } else if (var3 instanceof Object[]) {
- Object[] var6 = var3;
-
- for(int var7 = 0; var7 < var6.length; ++var7) {
- this.addMessageComponents(var1, var2, var6[var7], var4, false);
- }
- } else if (var3 instanceof Icon) {
- JLabel var10 = new JLabel((Icon)var3, 0);
- ((JComponent)var10).setForeground(UIManager.getColor("OptionPane.messageForeground"));
- this.addMessageComponents(var1, var2, var10, var4, true);
- } else {
- String var11 = var3.toString();
- int var12 = var11.length();
- if (var12 <= 0) {
- return;
- }
-
- int var8 = var11.indexOf(10);
- if (var8 >= 0) {
- if (var8 == 0) {
- this.addMessageComponents(var1, var2, new 5(), var4, true);
- } else {
- this.addMessageComponents(var1, var2, var11.substring(0, var8), var4, false);
- }
-
- this.addMessageComponents(var1, var2, var11.substring(var8 + 1), var4, false);
- } else if (var12 > var4) {
- Box var9 = Box.createVerticalBox();
- this.burstStringInto(var9, var11, var4);
- this.addMessageComponents(var1, var2, var9, var4, true);
- } else {
- JLabel var13 = new JLabel(var11, 2);
- ((JComponent)var13).setForeground(UIManager.getColor("OptionPane.messageForeground"));
- this.addMessageComponents(var1, var2, var13, var4, true);
- }
- }
-
- }
- }
-
- protected void burstStringInto(Container var1, String var2, int var3) {
- int var4 = var2.length();
- if (var4 > 0) {
- if (var4 > var3) {
- int var5 = var2.lastIndexOf(32, var3);
- if (var5 <= 0) {
- var5 = var2.indexOf(32, var3);
- }
-
- if (var5 > 0 && var5 < var4) {
- this.burstStringInto(var1, var2.substring(0, var5), var3);
- this.burstStringInto(var1, var2.substring(var5 + 1), var3);
- return;
- }
- }
-
- JLabel var6 = new JLabel(var2, 2);
- ((JComponent)var6).setForeground(UIManager.getColor("OptionPane.messageForeground"));
- var1.add(var6);
- }
- }
-
- public boolean containsCustomComponents(JOptionPane var1) {
- return this.hasCustomComponents;
- }
-
- protected ActionListener createButtonActionListener(int var1) {
- return new ButtonActionListener(this, var1);
- }
-
- protected Container createButtonArea() {
- JPanel var1 = new JPanel();
- ((JComponent)var1).setBorder(UIManager.getBorder("OptionPane.buttonAreaBorder"));
- ((Container)var1).setLayout(new ButtonAreaLayout(true, 6));
- this.addButtonComponents(var1, this.getButtons(), this.getInitialValueIndex());
- return var1;
- }
-
- protected LayoutManager createLayoutManager() {
- return new BoxLayout(this.optionPane, 1);
- }
-
- protected Container createMessageArea() {
- JPanel var1 = new JPanel();
- ((JComponent)var1).setBorder(UIManager.getBorder("OptionPane.messageAreaBorder"));
- ((Container)var1).setLayout(new BorderLayout());
- 2 var2 = new 2();
- 3 var3 = new 3();
- 4 var4 = new 4();
- ((Container)var3).setLayout(new BorderLayout());
- ((Container)var3).add(var4, "West");
- ((Container)var3).add(var2, "Center");
- ((Container)var2).setLayout(new GridBagLayout());
- GridBagConstraints var5 = new GridBagConstraints();
- var5.gridx = var5.gridy = 0;
- var5.gridwidth = 0;
- var5.gridheight = 1;
- var5.anchor = 17;
- var5.insets = new Insets(0, 0, 3, 0);
- this.addMessageComponents(var2, var5, this.getMessage(), this.getMaxCharactersPerLineCount(), false);
- ((Container)var1).add(var3, "Center");
- this.addIcon(var1);
- return var1;
- }
-
- protected PropertyChangeListener createPropertyChangeListener() {
- return new PropertyChangeHandler(this);
- }
-
- protected Container createSeparator() {
- return null;
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicOptionPaneUI();
- }
-
- protected Object[] getButtons() {
- if (this.optionPane != null) {
- Object[] var1 = this.optionPane.getOptions();
- if (var1 == null) {
- int var3 = this.optionPane.getOptionType();
- String[] var2;
- if (var3 == 0) {
- var2 = new String[]{(String)UIManager.get("OptionPane.yesButtonText"), (String)UIManager.get("OptionPane.noButtonText")};
- } else if (var3 == 1) {
- var2 = new String[]{(String)UIManager.get("OptionPane.yesButtonText"), (String)UIManager.get("OptionPane.noButtonText"), (String)UIManager.get("OptionPane.cancelButtonText")};
- } else if (var3 == 2) {
- var2 = new String[]{(String)UIManager.get("OptionPane.okButtonText"), (String)UIManager.get("OptionPane.cancelButtonText")};
- } else {
- var2 = new String[]{(String)UIManager.get("OptionPane.okButtonText")};
- }
-
- return var2;
- } else {
- return var1;
- }
- } else {
- return null;
- }
- }
-
- protected Icon getIcon() {
- Icon var1 = this.optionPane == null ? null : this.optionPane.getIcon();
- if (var1 == null && this.optionPane != null) {
- var1 = this.getIconForType(this.optionPane.getMessageType());
- }
-
- return var1;
- }
-
- protected Icon getIconForType(int var1) {
- if (var1 >= 0 && var1 <= 3) {
- switch (var1) {
- case 0:
- return UIManager.getIcon("OptionPane.errorIcon");
- case 1:
- return UIManager.getIcon("OptionPane.informationIcon");
- case 2:
- return UIManager.getIcon("OptionPane.warningIcon");
- case 3:
- return UIManager.getIcon("OptionPane.questionIcon");
- default:
- return null;
- }
- } else {
- return null;
- }
- }
-
- protected int getInitialValueIndex() {
- if (this.optionPane != null) {
- Object var1 = this.optionPane.getInitialValue();
- Object[] var2 = this.optionPane.getOptions();
- if (var2 == null) {
- return 0;
- }
-
- if (var1 != null) {
- for(int var3 = var2.length - 1; var3 >= 0; --var3) {
- if (var2[var3].equals(var1)) {
- return var3;
- }
- }
- }
- }
-
- return -1;
- }
-
- protected int getMaxCharactersPerLineCount() {
- return this.optionPane.getMaxCharactersPerLineCount();
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- protected Object getMessage() {
- this.inputComponent = null;
- if (this.optionPane != null) {
- if (!this.optionPane.getWantsInput()) {
- return this.optionPane.getMessage();
- } else {
- Object var1 = this.optionPane.getMessage();
- Object[] var2 = this.optionPane.getSelectionValues();
- Object var3 = this.optionPane.getInitialSelectionValue();
- Object var4;
- if (var2 != null) {
- if (var2.length < 20) {
- JComboBox var5 = new JComboBox();
- int var6 = 0;
-
- for(int var7 = var2.length; var6 < var7; ++var6) {
- var5.addItem(var2[var6]);
- }
-
- if (var3 != null) {
- var5.setSelectedItem(var3);
- }
-
- this.inputComponent = var5;
- var4 = var5;
- } else {
- JList var8 = new JList(var2);
- JScrollPane var11 = new JScrollPane(var8);
- var8.setVisibleRowCount(10);
- if (var3 != null) {
- var8.setSelectedValue(var3, true);
- }
-
- ((Component)var8).addMouseListener(new ListSelectionListener(this));
- var4 = var11;
- this.inputComponent = var8;
- }
- } else {
- JTextField var9 = new JTextField(20);
- if (var3 != null) {
- ((JTextComponent)var9).setText(var3.toString());
- }
-
- var9.addActionListener(new TextFieldActionListener(this));
- var4 = this.inputComponent = var9;
- }
-
- Object[] var10;
- if (var1 == null) {
- var10 = new Object[]{var4};
- } else {
- var10 = new Object[]{var1, var4};
- }
-
- return var10;
- }
- } else {
- return null;
- }
- }
-
- public Dimension getMinimumOptionPaneSize() {
- return this.minimumSize == null ? new Dimension(262, 90) : new Dimension(this.minimumSize.width, this.minimumSize.height);
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- if ((JOptionPane)var1 == this.optionPane) {
- Dimension var2 = this.getMinimumOptionPaneSize();
- LayoutManager var3 = ((Container)var1).getLayout();
- if (var3 != null) {
- Dimension var4 = var3.preferredLayoutSize(var1);
- return var2 != null ? new Dimension(Math.max(var4.width, var2.width), Math.max(var4.height, var2.height)) : var4;
- } else {
- return var2;
- }
- } else {
- return null;
- }
- }
-
- protected boolean getSizeButtonsToSameWidth() {
- return true;
- }
-
- protected void installComponents() {
- this.optionPane.add(this.createMessageArea());
- Container var1 = this.createSeparator();
- if (var1 != null) {
- this.optionPane.add(var1);
- }
-
- this.optionPane.add(this.createButtonArea());
- }
-
- protected void installDefaults() {
- LookAndFeel.installColorsAndFont(this.optionPane, "OptionPane.background", "OptionPane.foreground", "OptionPane.font");
- LookAndFeel.installBorder(this.optionPane, "OptionPane.border");
- this.minimumSize = UIManager.getDimension("OptionPane.minimumSize");
- this.optionPane.setOpaque(true);
- }
-
- protected void installKeyboardActions() {
- this.optionPane.registerKeyboardAction(new 1(this), KeyStroke.getKeyStroke(27, 0), 2);
- }
-
- protected void installListeners() {
- if ((this.propertyChangeListener = this.createPropertyChangeListener()) != null) {
- this.optionPane.addPropertyChangeListener(this.propertyChangeListener);
- }
-
- }
-
- public void installUI(JComponent var1) {
- this.optionPane = (JOptionPane)var1;
- this.installDefaults();
- this.optionPane.setLayout(this.createLayoutManager());
- this.installComponents();
- this.installListeners();
- this.installKeyboardActions();
- }
-
- protected void resetInputValue() {
- if (this.inputComponent != null && this.inputComponent instanceof JTextField) {
- this.optionPane.setInputValue(((JTextField)this.inputComponent).getText());
- } else if (this.inputComponent != null && this.inputComponent instanceof JComboBox) {
- this.optionPane.setInputValue(((JComboBox)this.inputComponent).getSelectedItem());
- } else if (this.inputComponent != null) {
- this.optionPane.setInputValue(((JList)this.inputComponent).getSelectedValue());
- }
-
- }
-
- public void selectInitialValue(JOptionPane var1) {
- if (this.inputComponent != null) {
- this.inputComponent.requestFocus();
- } else {
- if (this.initialFocusComponent != null) {
- this.initialFocusComponent.requestFocus();
- }
-
- if (this.initialFocusComponent instanceof JButton) {
- JRootPane var2 = SwingUtilities.getRootPane(this.initialFocusComponent);
- if (var2 != null) {
- var2.setDefaultButton((JButton)this.initialFocusComponent);
- }
- }
- }
-
- }
-
- protected void uninstallComponents() {
- this.hasCustomComponents = false;
- this.inputComponent = null;
- this.initialFocusComponent = null;
- this.optionPane.removeAll();
- }
-
- protected void uninstallDefaults() {
- LookAndFeel.uninstallBorder(this.optionPane);
- }
-
- protected void uninstallKeyboardActions() {
- this.optionPane.unregisterKeyboardAction(KeyStroke.getKeyStroke(27, 0));
- }
-
- protected void uninstallListeners() {
- if (this.propertyChangeListener != null) {
- this.optionPane.removePropertyChangeListener(this.propertyChangeListener);
- this.propertyChangeListener = null;
- }
-
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallComponents();
- this.optionPane.setLayout((LayoutManager)null);
- this.uninstallKeyboardActions();
- this.uninstallListeners();
- this.uninstallDefaults();
- this.optionPane = null;
- }
- }
-